The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
To maintain the security of a private computer network, a client computer (“client”) may be required to access the network through a server computer (“server”) that acts as an access point to the network. Prior to granting the client access to the network, the server may require the client to supply authentication credentials to the server so that the server can be certain that the client actually is the entity that the client purports to be. The client's authentication credentials indicate the client's identity. If the client's authentication credentials do not match authentication credentials that are stored on the server, then the server refuses the client access to the network. Even after a client has successfully authenticated itself, the server may restrict, based on authorization characteristics that are associated with the client and stored on the server, the client's access to network resources and/or the operations that the client can perform relative to the network resources.
It is not uncommon for unauthorized computers to attempt to eavesdrop on information that is communicated between an authorized client and a server. To prevent unauthorized computers from making use of information that the unauthorized computers should not have received, a client and a server may employ an encryption mechanism to protect information that will be communicated between the client and the server. According to one kind of encryption mechanism, the client and the server both derive one or more session keys from a shared secret key that only the client and the server possess. Before sending messages to each other, the client and the server encrypt the messages using the session keys. Using the session keys, the client and the server can decrypt the encrypted messages that they receive from each other. Computers that do not have the shared secret key cannot derive the session keys, and, consequently, cannot decrypt the encrypted messages communicated between the client and the server.
Multiple clients may access a private network through the same server. To prevent one client from masquerading as another client, different clients typically are associated with different authentication credentials. Different clients may be associated with different authorization characteristics. To prevent one client from making use of information intended exclusively for another client, different clients typically are provided with different shared secret keys. Collectively, a client's authentication credentials, authorization characteristics, and shared secret key are referred to as that client's state information.
According to one approach, a server stores, for each client, separate client state information. Where there are many clients, storing separate client state information for each client uses a large amount of memory. A server's expense is proportionate to the amount of memory that the server requires to store client state information.
Many existing network devices do not contain memory sufficient to store client state information for large numbers of clients. For example, the relatively small amount of memory available to some network routers prevents those network routers from performing the server functions described above when a large number of clients will be accessing a network. Many network routers do not have enough memory to concurrently store many different authentication credentials, authorization characteristics, and shared secret keys. Also, many devices use non-volatile memory systems like flash memory that have limitations on their use. Flash memory can be written to only a fixed number of times, and each write operation can take a significant amount of time. Because of these limitations, flash memory systems are inappropriate for storing dynamic data such as client state information.
In today's increasingly wireless world, memory limitations are not the only concern related to the storage of client state information. A wireless client may roam from one location to another. As a wireless client leaves one location and enters another, the wireless client may seek to access the same private network through a different server. If the server through which the client seeks access does not have the client's state information, then the server will not be able to encrypt messages to and decrypt messages from the client.
One possible approach to solving the problem described above might be to manage a set of servers in such a way that client state information stored on one server is replicated on every server in a domain. However, where there are many clients and many servers, replicating all client state information on every server is a daunting task, especially if new clients are continuously added to the client pool. If each server in a domain needs to be equipped with a very large amount of memory to store all of the client state information for all of the clients, then the expense to the administrators of the domain may be unbearable. Indeed, if the number of clients increases at a sufficiently rapid pace, the administrators may find it impossible to keep up with the growth.